package AOP;

import org.springframework.aop.Advisor;
import org.springframework.aop.framework.ProxyFactory;

public class AOPFactory {
    /**
     * 组装工厂, 说白了就是代理模式的升级版
     * @param aa 原型对象,也就是要被切面使用的类
     * @param advisor
     * @return
     */
    public static Object proxy(Object aa, Advisor advisor){
        ProxyFactory proxyFactory = new ProxyFactory();
        proxyFactory.setTarget(aa);//给代理工厂一个原型对象
        proxyFactory.addAdvisor(advisor);//给代理工厂一个切面
        Object ob = proxyFactory.getProxy();//从代理工厂中获取一个代理后的对象
        return ob;
    }
}
